/**
 * @format
 * @Author: TC
 * @Date: 2025-04-20 00:23:05
 * @Last Modified by: TC
 * @Last Modified time: 2025-06-17 14:10:20
 */

import { app } from "../../FrameWork/App";
import { nsBundleConst } from "../Const/BundleConst";

/**
 * 预加载管理
 */
export class PreloadManager {
    //#region 公共预加载
    public loadList = [this._loadCommon, this._loadCfg, this._loadMainUI];
    /**
     * 加载公共预制
     * @param cb 回调
     */
    private _loadCommon(cb?: Function): void {
        app.resMgr.loadDir(nsBundleConst.Common, "Prefab", () => {
            cb && cb();
        });
    }

    /**
     * 加载配置
     * @param cb
     */
    private _loadCfg(cb?: Function): void {
        app.cfgMgr.loadCfgBin(() => {
            cb && cb();
        });
    }

    /**
     * 加载主界面
     * @param cb 回调
     */
    private _loadMainUI(cb?: Function): void {
        app.resMgr.loadPrefab(nsBundleConst.Module, "Main/MainUI", () => {
            cb && cb();
        });
    }

    //#endregion 公共预加载
    //#region 游戏预加载
    public gameList = [this._loadBattleUI, this._loadHero];
    /**
     * 加载战斗界面
     * @param cb 回调
     */
    private _loadBattleUI(cb?: Function): void {
        app.resMgr.loadPrefab(nsBundleConst.Module, "Game/Battle/BattleUI", () => {
            cb && cb();
        });
    }
    /**
     * 加载地图
     * @param cb 回调
     */
    private _loadMap(cb?: Function): void {
        app.resMgr.loadDir(nsBundleConst.Map, "1", () => {
            cb && cb();
        });
    }

    /**
     * 加载英雄
     * @param cb 回调
     */
    private _loadHero(cb?: Function): void {
        app.resMgr.loadDir("1001", "Entity", () => {
            cb && cb();
        });
    }

    //#endregion 游戏预加载
}
